L2-DataLink Layer.
노드node는 2계층 프로토콜을 실행하는 장치를 의미한다.
링크link는 인접한 노드들을 연결하는 통신 채널을 의미한다.
NIC
기본 서비스
링크 계층의 역할, 즉 네트워크 계층에 제공하는 서비스는 기본적으로 데이터그램을 노드에서 인접 노드로 전달하는 것이다. 네트워크 계층의 역할은 호스트에서 호스트까지로, 네트워크 전체 범위에 걸친 패킷(데이터그램) 전달을 책임졌다. 반면, 링크 계층은 바로 인접한 노드간의 한정된 범위에서의 패킷 전달을 담당한다. 예컨대 부분의 합은 전체가 되듯, 커다란 문제를 작은 문제로 나누어서 해결하는 분할정복의 패러다임과 비슷한 면이 있다.
세부 서비스
링크에 적용되는 링크 계층 프로토콜에 따라 세부적인 서비스 내용은 달라질 수 있다.
Framing
Link access
Reliable delivery
Error detection and correction
프로토콜
Multiple Access Links and Protocols
만약 노드와 노드가 연결되는 물리적 매개체가 둘만의 것이 아니라면 어떨까?
가장 쉬운 예시로, 무선 매체의 브로드캐스트 채널이 있다. 공기중으로 신호를 보내는 무선 채널은 특성상 브로드캐스트에 속한다. 하나의 채널을 여러 노드가 공유하고 있는 셈이다. 이러한 상황 속에서는 서로의 신호가 충돌collide할 가능성이 생긴다.
다중 접속 프로토콜은 이러한 충돌 문제를 해결할 수 있어야 하며, 이러한 프로토콜에 관한 수천편의 논문이 존재한다.
Channel Partitioning Protocols
Random Access Protocols
CSMA (Carrier Sense Multiple Access)
-
말하기 전에 듣는다.
노드는 전송하기 전에 채널을 듣는다. 이를 캐리어 감지carrier sensing라 하며, 다른 노드가 채널을 사용 중일 시 랜덤한 시간 후에 감지를 반복한다. 채널을 사용할 수 있게 되면, 즉시 패킷(프레임)을 전송한다. -
다른 사람이 동시에 말하기 시작하면 말을 멈춘다.
노드는 전송하면서 동시에 채널을 듣는다. 이를 충돌 검출collision detection이라 하며, 다른 노드가 채널을 사용 중일 시 랜덤한 시간 후에 충돌 검출을 반복한다. -
CSMA/CD (/Collision Detect) <- 유선 충돌 탐지
- 캐리어 감지 후 채널 사용 중일 시 잼 신호 브로드캐스트.
- CRC값을 검사 후 이상이 있을 경우 폐기 (collision detection)
- 전송을 못했을 경우, Back-off 알고리즘에 따라 랜덤한 시간 후 재시도.
- CSMA/CA (/Collision Avoid) <- 무선 충돌 회피
- Carrier Sense: 통신 전 채널 듣기(탐색)
- Multiple Access: Data의 흐름 감지
- Collision Avoidance: Data 흐름 x -> 예비신호를 통해 충돌 회피
Taking-Turns Protocol
token-passing
토큰이라는 발언권 역할을 하는 특수 목적 패킷을 차례대로 계속 회전시킨다. 채널을 공유하는 호스트들은 이 토큰을 계속 주고받으며, 토큰이 왔을 때에만 채널을 사용할 수 있다. 사용할 때는 토콘을 그 다음 호스트에 보내지 않고 갖고 있는다.
MAC addresses
물리적 주소라 불리는 MAC은 IP 주소와는 다른 쓰임이 있다.
IP 주소가 호스트를 지칭하는 네트워크 계층에서의 주소라면, MAC 주소는 호스트가 지닌 링크 계층의 end point에 할당되는 주소이다. 즉, 다시말해서 네트워크 계층의 인터페이스에 할당되는 링크 계층 주소이다.
접속한 네트워크에 따라 변하는 IP와 달리, NIC 자체에 부여되어 변하지 않는 고유 주소이다.
6byte 고정 주소 체계로서 e.g) 1A-23-F9-CD-06-9B 와 같이 표기한다.
ARP (Adresss Resolution Protocol)
일반적으로 보내고자 하는 상대방과 연결되는 링크 포트의 MAC주소를 알지 못하면, 통신을 할 수 없다. 하지만 상대 호스트의 IP 주소를 안다면 어떨까?
물론, 그래도 통신은 불가능하다 ㅋㅋ 애초에 링크 계층과 통신이 안되는데 상위 계층인 네트워크 계층과 어떻게 통신을 한단 말인가? 그러니, 먼저 MAC 주소를 알아내야 할 필요성이 있다. 그래서 필요한게 ARP이다.
먼저, 모든 호스트에게 브로드캐스트로 ARP Request를 보낸다. 현실적으로 WAN으로 브로드캐스트를 보내는건 말도 안되니, 로컬 상황에서만 사용 가능한 프로토콜이다.
그러면 해당하는 IP를 가진 호스트가 ARP Reply 패킷을 통해 MAC 주소를 알려준다.
ARP Cache Table
자신의 ARP 요청과 응답쌍이 기록되는 히스토리라고 할 수 있다.
불필요한 질문을 줄이고, 신속성과 효율성을 도모하는 것이 목적이다.
RARP (Reverse Address Resolution Protocol)
DHCP에 의해 대체된, 상대의 MAC을 알때 IP를 찾는 방법이다.
#Q 스위치 테이블은 무엇일까
#Q 플러그 앤 플레이가 뭘까
#Q MAC 주소체계가 평면적이란건 무슨 의밀까